//阚子路
#ifndef DATAMANAGER_H
#define DATAMANAGER_H

#include <QObject>
#include <QMap>
#include <QList>
#include "Code/Component/ComponentParam.h" // 包含组件参数类（需有 id、功率等字段）

class DataManager : public QObject
{
    Q_OBJECT
signals:
    // 原有：发射“普通组件参数列表”（如光伏、储能等）
    void dataImported(const QList<ComponentParam>& params);
    // 柴油发电机（id=3）的时间→功率映射
    void dieselGenTimePowerLoaded(QMap<int, float> timeToPower);
    // 光伏（id=1）的时间→功率映射
    void pvDataLoaded(const QMap<int, float>& pvTimePower);
    // 储能（id=2）的时间→功率映射
    void energyStorageDataLoaded(const QMap<int, float>& esTimePower);
    // 负载（id=4）的时间→功率映射
    void loadDataLoaded(const QMap<int, float>& loadTimePower);
    // 电网（id=5）的时间→功率映射
    void gridDataLoaded(const QMap<int, float>& gridTimePower);
    // 新增：电价（id=6）的时间→电价映射
    void gPriceDataLoaded(const QMap<int, float>& gPriceTimePrice);
    // 导入失败信号
    void importFailed(const QString& reason);
    // 导出失败时发射（如文件写失败、无数据）
    void exportFailed(const QString& reason);

public:
    explicit DataManager(QObject* parent = nullptr);

    // 原有：模拟导入“普通组件参数”的 CSV
    void importCsvData(const QString& path);
    // 导入柴油发电机CSV
    void importDieselGenCsv(const QString& path);
    // 导入光伏CSV
    void importPvCsv(const QString& path);
    // 导入储能CSV
    void importEnergyStorageCsv(const QString& path);
    // 导入负载CSV
    void importLoadCsv(const QString& path);
    // 导入电网CSV
    void importGridCsv(const QString& path);
    // 新增：导入电价CSV
    void importGPriceCsv(const QString& path);

    // 导出方法：与各组件一一对应，保持参数格式统一
    void exportDieselGenCsv(const QString& savePath, const QMap<int, float>& dieselTimePower);
    void exportPvCsv(const QString& savePath, const QMap<int, float>& pvTimePower);           // 光伏导出
    void exportEnergyStorageCsv(const QString& savePath, const QMap<int, float>& esTimePower); // 储能导出
    void exportLoadCsv(const QString& savePath, const QMap<int, float>& loadTimePower);       // 负载导出
    void exportGridCsv(const QString& savePath, const QMap<int, float>& gridTimePower);       // 电网导出
    // 新增：电价导出
    void exportGPriceCsv(const QString& savePath, const QMap<int, float>& gPriceTimePrice);
};

#endif // DATAMANAGER_H

